package com.railway.common.listeners;

import java.util.HashSet;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import com.railway.common.constants.SysConstant;

public class UserSessionListener implements HttpSessionListener { 

    public void sessionCreated(HttpSessionEvent event) { 
   
           HttpSession session = event.getSession(); 
           ServletContext application = session.getServletContext(); 
           
           // 在application范围由一个HashSet集保存所有的session 
           Set sessions = (Set) application.getAttribute(SysConstant.USER_SESSIONS); 
           if (sessions == null) { 
                  sessions = new HashSet(); 
                  application.setAttribute(SysConstant.USER_SESSIONS, sessions); 
           } 
           
           // 新创建的session均添加到HashSet集中 
           sessions.add(session); 
           // 可以在别处从application范围中取出sessions集合 
           // 然后使用sessions.size()获取当前活动的session数，即为“在线人数” 
    } 

    public void sessionDestroyed(HttpSessionEvent event) { 
  
    	
           HttpSession session = event.getSession(); 
           ServletContext application = session.getServletContext(); 
           Set sessions = (Set) application.getAttribute(SysConstant.USER_SESSIONS); 
           
           // 销毁的session均从HashSet集中移除 
           sessions.remove(session); 
    } 
} 
